package cn.px.service.repair;

import cn.px.dao.bean.MyVOPage;
import cn.px.dao.dto.repair.RepairFormDTO;
import cn.px.dao.entity.repair.RepairForm;
import cn.px.dao.vo.repair.RepairFormVO;
import cn.px.service.base.IBaseService;

import java.util.List;

/**
 * @Description 维修单 service
 * @author 品讯科技
 * @date 2024-08
 * @Version Copyright (c) 2019,北京乾元坤和科技有限公司 All rights reserved.
 */
public interface RepairFormService extends IBaseService<RepairForm, RepairFormDTO> {

    /**
     * 批量删除
     *
     * @param ids ：
     * @return ：
     */
    int batchDelete(List<String> ids);

    /**
     * 查询分页
     *
     * @param record   ：
     * @param pageNum  ：
     * @param pageSize ：
     * @return ：
     */
    MyVOPage<RepairFormVO> selectPageVO(RepairFormDTO record, int pageNum, int pageSize);

    /**
     * 完成维修
     *
     * @param dto
     */
    void finish(RepairFormDTO dto);

    /**
     * 保存
     *
     * @param model:
     */
    RepairForm saveByApplication(RepairFormDTO model);

    /**
     * 派工
     *
     * @param model
     */
    void dispatchModelByDTO(RepairFormDTO model);



    /**
     * 接收维修单
     *
     * @param id ：
     */
    void repairFormDeal(String id);

    /**
     * 统计时间内的设备数量
     *
     * @param model ：
     * @return ：
     */
    int countDicitinctSbByTime(RepairFormDTO model);

    /**
     * 每月每台设备维修次数，维修费用，维修工时
     *
     * @param model    ：
     * @param pageNum  ：
     * @param pageSize ：
     * @return ：
     */
    MyVOPage<RepairFormVO> statisticsByGroupBySbPage(RepairFormDTO model, int pageNum, int pageSize);


    /**
     * 每月维修次数，维修费用，维修工时（不依赖于设备）
     *
     * @param model    ：
     * @param pageNum  ：
     * @param pageSize ：
     * @return ：
     */
    MyVOPage<RepairFormVO> statisticsByGroupByMonthPage(RepairFormDTO model, int pageNum, int pageSize);

    /**
     * 每月维修次数，维修费用，维修工时（不依赖于设备）
     *
     * @param model    ：
     * @param pageNum  ：
     * @param pageSize ：
     * @return ：
     */
    MyVOPage<RepairFormVO> statisticsByGroupByErrorTypePage(RepairFormDTO model, int pageNum, int pageSize);

    /**
     * 每月维修次数，维修费用，维修工时（不依赖于设备）
     *
     * @param model    ：
     * @param pageNum  ：
     * @param pageSize ：
     * @return ：
     */
    MyVOPage<RepairFormVO> statisticsByGroupByUserPage(RepairFormDTO model, int pageNum, int pageSize);

    /**
     * 指定月月维修次数，维修费用，维修工时（所有设备）
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsResultSbGroupBySbMonth(RepairFormDTO model);

    /**
     * 指定月月维修次数，维修费用，维修工时（所有设备）
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsResultMonthGroupByMonth(RepairFormDTO model);

    /**
     * 指定月维修次数，维修费用，维修工时（所有异常类型）
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsResultErrorTypeByGroupByErrorType(RepairFormDTO model);

    /**
     * 指定月维修次数，维修费用，维修工时（所有人）
     *
     * @param model ：
     * @return ：
     */
    List<RepairFormVO> statisticsResultUserByGroupByUser(RepairFormDTO model);

}
